/*
 * User: rant
 * Date: 04/01/2007
 *
 *
 */
package laMalinche;

import laMalinche.constraint.ConstraintManager;
import laMalinche.constraint.ConstraintRuleListener;
import laMalinche.editableContext.AboutToChangeManager;
import laMalinche.rete.rule.ProductionRule;
import laMalinche.ruleTailing.BusinessRelevantPropertyListener;

import java.util.*;

/**
 *
 */
public interface LaMalinche {

	/*
	check all violated constraints
	 */
	void updateConstraintStatus();
    void updateTrigered();
    void updateTrigered(String s);


    /*
	do the necessary things to initiate LaMalinche after rules are added
	 */
	void start();
/*
	remove listeners
 */
	void detach();

	void add(Set<ProductionRule> rules);

	 void setAboutToChangeManager(final AboutToChangeManager aboutToChangeManager);

	void setConstraintRuleListener(final ConstraintRuleListener constraintRuleListener);

	void setConstraintManager(final ConstraintManager constraintManager);

	void addRelevantPropertyListener(BusinessRelevantPropertyListener listener);

}